#
# OpenSfM 文档构建配置文件，由
# sphinx-quickstart 于 2015-12-19 09:17:37 创建。
#
# 此文件在执行时，当前目录会被设置为
# 其所在目录。
#
# 注意，并非所有可能的配置值都存在于此
# 自动生成的文件中。
#
# 所有配置值都有默认值；被注释掉的值
# 用于显示默认值。

# 如果扩展（或要记录的模块）在另一个目录中，
# 请在此处将这些目录添加到 sys.path。如果目录是相对于
# 文档根目录的相对路径，请使用 os.path.abspath 使其成为绝对路径，如下所示。
# sys.path.insert(0, os.path.abspath('.'))
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))

# -- 常规配置 ------------------------------------------------

# 如果您的文档需要最低版本的 Sphinx，请在此处说明。
# needs_sphinx = '1.0'

# 在此处添加任何 Sphinx 扩展模块名称，作为字符串。它们可以是
# Sphinx 自带的扩展（名为 'sphinx.ext.*'）或您的自定义扩展。
extensions = [
    "sphinx.ext.autodoc",
    "sphinx.ext.doctest",
    "sphinx.ext.coverage",
    "sphinx.ext.mathjax",
    "sphinx.ext.viewcode",
    "sphinx.ext.graphviz",
    "sphinx.ext.napoleon",
    'rst2pdf.pdfbuilder'
]

# 在此处添加包含模板的任何路径，相对于此目录。
templates_path = ["_templates"]

# 源文件名的后缀。
# 您可以指定多个后缀作为字符串列表：
# source_suffix = ['.rst', '.md']
source_suffix = ".rst"

# 源文件的编码。
# source_encoding = 'utf-8-sig'

# 主目录文档。
master_doc = "index"

# 关于项目的一般信息。
project = "OpenSfM"
copyright = "2021, Mapillary"
author = "Mapillary"

# 您正在记录的项目的版本信息，作为
# |version| 和 |release| 的替换，也用于其他地方
# 文档中的各个位置。
#
# 简短的 X.Y 版本。
# version = "0.0"
# 完整版本，包括 alpha/beta/rc 标签。
# release = "0.0.0"

# Sphinx 自动生成的内容使用的语言。参考文档
# 获取支持的语言列表。
#
# 如果您通过 gettext 目录进行内容翻译，也会使用此设置。
# 通常在这些情况下，您从命令行设置 "language"。
language = "zh_CN"

# 有两个选项可以替换 |today|：要么将 today 设置为某个
# 非假值，然后使用它：
# today = ''
# 否则，使用 today_fmt 作为 strftime 调用的格式。
# today_fmt = '%B %d, %Y'

# 相对目录的模式列表，用于匹配在查找源文件时
# 要忽略的文件和目录。
exclude_patterns = ["EN", "ZH"]

# 用于所有文档的 reST 默认角色
#（用于此标记：`text`）。
# default_role = None

# 如果为真，'()' 将被附加到 :func: 等交叉引用文本。
# add_function_parentheses = True

# 如果为真，当前模块名将被添加到所有描述
# 单元标题前（例如 .. function::）。
# add_module_names = True

# 如果为真，sectionauthor 和 moduleauthor 指令将显示在
# 输出中。默认情况下它们被忽略。
# show_authors = False

# Pygments（语法高亮）样式的名称。
pygments_style = "sphinx"

# 模块索引排序时要忽略的前缀列表。
# modindex_common_prefix = []

# 如果为真，保持警告作为文档中的"系统消息"段落。
# keep_warnings = False

# 如果为真，`todo` 和 `todoList` 会产生输出，否则不产生任何输出。
todo_include_todos = False


# -- HTML 输出选项 ----------------------------------------------

# HTML 和 HTML 帮助页面使用的主题。
# 参见文档获取内置主题列表。
html_theme = "sphinx_rtd_theme"

# 主题选项是特定于主题的，用于自定义主题的外观和感觉。
# 有关每个主题可用选项的列表，请参见文档。
# html_theme_options = {}

# 在此���添加包含自定义主题的任何路径，相对于此目录。
# html_theme_path = []

# 此 Sphinx 文档集称。如果为 None，则默认为
# "<project> v<release> documentation"。
# html_title = None

# 导航栏的较短标题。默认与 html_title 相同。
# html_short_title = None

# 图像文件的名称（相对于此目录），放置在侧边栏顶部。
# html_logo = None

# 用作文档图标的图像文件的名称（在静态路径中）。
# 此文件应为 Windows 图标文件（.ico），大小为 16x16 或 32x32
# 像素。
# html_favicon = None

# 在此处添加包含自定义静态文件（如样式表）的任何路径，
# 相对于此目录。它们会在内置静态文件之后被复制，
# 因此名为 "default.css" 的文件将覆盖内置的 "default.css"。
html_static_path = ["_static"]

# 在此处添加包含自定义文件（如 robots.txt 或
# .htaccess）的任何额外路径，相对于此目录。这些文件会直接
# 复制到文档的根目录。
# html_extra_path = []

# 如果不为空，则在每个页面底部插入 "Last updated on:" 时间戳，
# 使用给定的 strftime 格式。
# html_last_updated_fmt = '%b %d, %Y'

# 如果为真，将使用 SmartyPants 将引号和破折号转换为
# 排版正确的实体。
# html_use_smartypants = True

# 自定义侧边栏模板，将文档名称映射到模板名称。
# html_sidebars = {}

# 应渲染到页面的其他模板，将页面名称映射到
# 模板名称。
# html_additional_pages = {}

# 如果为假，则不生成模块索引。
# html_domain_indices = True

# 如果为假，则不生成索引。
# html_use_index = True

# 如果为真，索引将被分成每个字母的单独页面。
# html_split_index = False

# 如果为真，将添加指向 reST 源的链接到页面。
# html_show_sourcelink = True

# 如果为真，在 HTML 页脚显示 "Created using Sphinx"。默认为 True。
# html_show_sphinx = True

# 如果为真，在 HTML 页脚显示 "(C) Copyright ..."。默认为 True。
# html_show_copyright = True

# 如果为真，将输出 OpenSearch 描述文件，所有页面将
# 包含引用它的 <link> 标签。此选项的值必须是
# 从中提供完成的 HTML 的基本 URL。
# html_use_opensearch = ''

# HTML 文件的文件名后缀（例如 ".xhtml"）。
# html_file_suffix = None

# 用于生成 HTML 全文搜索索引的语言。
# Sphinx 支持以下语言：
#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
# html_search_language = 'en'

# 搜索语言支持的选项字典，默认为。
# 目前只有 'ja' 使用此配置���
# html_search_options = {'type': 'default'}

# JavaScript 文件的名称（相对于配置目录），
# 现搜索结果评分器。如果为空，将使用默认值。
# html_search_scorer = 'scorer.js'

# HTML 帮助构建器的输出文件基本名称。
htmlhelp_basename = "OpenSfMdoc"

# -- LaTeX 输出选项 ---------------------------------------------

latex_elements = {
    # 纸张大小（'letterpaper' 或 'a4paper'）。
    #'papersize': 'letterpaper',
    # 字体大小（'10pt'、'11pt' 或 '12pt'）。
    #'pointsize': '10pt',
    # LaTeX 导言区的附加内容。
    #'preamble': '',
    # LaTeX 图形（浮动）对齐
    #'figure_align': 'htbp',
    'preamble': r'''
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage{xeCJK}
    ''',
}

# 将文档树分组到 LaTeX 文件中。元组列表
#（源起始文件、目标名称、标题、作者、文档类 [howto、manual 或自定义类]）。
latex_documents = [
    (master_doc, "OpenSfM.tex", "OpenSfM Documentation", "Mapillary", "manual"),
]

# 图像文件的名称（相对于此目录），放置在标题页顶部。
# latex_logo = None

# 对于"manual"文档，如果为真，则顶级标题是部分，
# 而不是章节。
# latex_use_parts = False

# 如果为真，在内部链接后显示页面引用。
# latex_show_pagerefs = False

# 如果为真，在外部链接后显示 URL 地址。
# latex_show_urls = False

# 作为附录添加到所有手册的文档。
# latex_appendices = []

# 如果为假，则不生成模块索引。
# latex_domain_indices = True


# -- 手册页输出选项 ---------------------------------------

# 每个手册页一个条目。元组列表
#（源起始文件、名称、描述、作者、手册节）。
man_pages = [(master_doc, "opensfm", "OpenSfM Documentation", [author], 1)]

# 如果为真，在外部链接后显示 URL 地址。
# man_show_urls = False


# -- Texinfo 输出选项 -------------------------------------------

# 将文档树分组到 Texinfo 文件中。元组列表
#（源起始文件、目标名称、标题、作者、
# 目录菜单条目、描述、类别）
texinfo_documents = [
    (
        master_doc,
        "OpenSfM",
        "OpenSfM Documentation",
        author,
        "OpenSfM",
        "项目的一行描述。",
        "杂项",
    ),
]

# 作为附录添加到所有手册的文档。
# texinfo_appendices = []

# 如果为假，则不生成模块索引。
# texinfo_domain_indices = True

# URL 地址的显示方式：'footnote'、'no' 或 'inline'。
# texinfo_show_urls = 'footnote'

# 如果为真，不在"Top"节点的菜单中生成 @detailmenu。
# texinfo_no_detailmenu = False

# GitHub 编辑相设置
html_context = {
    "display_github": True,  # 添加'在 Github 上编辑'链接而不是'查看页面源码'
    "github_user": "mapillary",
    "github_repo": project,
    "github_version": "main",
    "conf_py_path": "/doc/source/",
    "source_suffix": source_suffix,
}

# pdf_documents 设置
pdf_documents = [
    ('index', u'documentation', u'OpenSfM 文档', u'OpenSfM'),
]

# 中文字体配置
pdf_style = {
    'fontpaths': ['/usr/share/fonts/'],
    'stylesheet': 'chinese',
    'font_path': ['/usr/share/fonts/'],
    'font_name': 'WenQuanYi Micro Hei',  # 使用文泉驿微米黑字体
    'mono_font_name': 'WenQuanYi Micro Hei Mono',
    'serif_font_name': 'AR PL UMing CN',
    'sans_font_name': 'WenQuanYi Micro Hei',
}

# PDF 输出配置
pdf_stylesheets = ['sphinx', 'a4']
pdf_style_path = None
pdf_use_index = False
pdf_toc_depth = 3
pdf_use_latex = False

# 添加自定义样式
pdf_custom_style = {
    'doc': 'normal',
    'std': 'normal'
}

# 图片设置
pdf_fit_mode = "shrink"
pdf_fit_background_mode = "scale"
